package com.fand.platform.userCenter.service;

import java.util.List;
import java.util.Map;

import com.fand.cache.support.CacheEvictSupport;
import com.fand.dto.PaginationDto;
import com.fand.platform.userCenter.dto.UserDto;
import com.fand.platform.userCenter.dto.UserLoInDto;
import com.fand.platform.userCenter.dto.UserReDto;

/**
 * 用户服务
 *
 * @author yaoHT
 */
public interface UserService extends CacheEvictSupport {
	String BEAN_ID = "com.fand.platform.userCenter.service.UserService";

	String CACHE_NAME = BEAN_ID + "Cache";
	/**
	 * 保存:用户
	 * 
	 * @param saveUser
	 *            用户对象
	 * 
	 * @return 用户对象
	 */
	UserDto saveUserByIdOrCodeForUser(UserDto saveUser);

	/**
	 * 保存:用户
	 * 
	 * @param saveUser
	 *            用户对象
	 * 
	 * @return 用户对象
	 */
	UserDto saveUserBy2ForUser(UserDto saveUser);

	/**
	 * 删除:用户
	 * 
	 * @param deleteUser
	 *            用户对象
	 * 
	 * @return 影响行数
	 */
	int deleteUserBy1(UserDto deleteUser);

	/**
	 * 删除:用户
	 * 
	 * @param deleteUser
	 *            用户对象
	 * 
	 * @return 影响行数
	 */
	int deleteUserByIds(UserDto deleteUser);

	/**
	 * 设置:用户
	 * 
	 * @param setUser
	 *            用户对象
	 * 
	 * @return 影响行数
	 */
	int setUserBy1(UserDto setUser);

	/**
	 * 设置:用户
	 * 
	 * @param setUser
	 *            用户对象
	 * 
	 * @return 影响行数
	 */
	int setUserBy2(UserDto setUser);

	/**
	 * 读取:用户
	 * 
	 * @param readUser
	 *            用户对象
	 * 
	 * @return 用户对象
	 */
	Integer readUserByCodeNqIdForInteger(UserDto readUser);

	/**
	 * 读取:用户
	 * 
	 * @param readUser
	 *            用户对象
	 * 
	 * @return 用户对象
	 */
	Integer readUserBy2ForInteger(UserDto readUser);

	/**
	 * 读取:用户
	 * 
	 * @param readListUser
	 *            用户对象
	 * 
	 * @return 用户对象集合
	 */
	List<Integer> readListUserBy1(UserDto readUser);

	/**
	 * 读取:用户
	 * 
	 * @param readListUser
	 *            用户对象
	 * 
	 * @return 用户对象集合
	 */
	List<Integer> readListUserBy2(UserDto readUser);

	/**
	 * 查询:用户
	 * 
	 * @param getUser
	 *            用户对象
	 * 
	 * @return 用户对象
	 */
	UserDto getUserBy1(UserDto getUser);

	/**
	 * 查询:用户
	 * 
	 * @param getUser
	 *            用户对象
	 * 
	 * @return 用户对象
	 */
	UserDto getUserById(UserDto getUser);

	/**
	 * 查询:用户
	 * 
	 * @param findUser
	 *            用户对象
	 * 
	 * @return 用户对象集合
	 */
	List<UserDto> findUserBy1(UserDto findUser);

	/**
	 * 查询:用户
	 * 
	 * @param findUser
	 *            用户对象
	 * 
	 * @return 用户对象集合
	 */
	List<UserDto> findUserBy2(UserDto findUser);
	
	/**
	 * 分页:用户
	 * 
	 * @param paginationUser
	 *            用户对象
	 * 
	 * @return 用户分页对象
	 */
	PaginationDto<UserDto> paginationUserBy1ForUserList(UserDto paginationUser);
			
	/**
	 * 分页
	 * 
	 * @param paginationUser
	 *            用户对象
	 * 
	 * @return 用户分页对象
	 */
	PaginationDto<Map<String, Object>> paginationUserBy1ForMapList(UserDto paginationUser);
	/**
	 * 保存:用户登录
	 * 
	 * @param saveUserLoIn
	 *            用户登录对象
	 * 
	 * @return 用户登录对象
	 */
	UserLoInDto saveUserLoInByIdOrCodeForUserLoIn(UserLoInDto saveUserLoIn);

	/**
	 * 保存:用户登录
	 * 
	 * @param saveUserLoIn
	 *            用户登录对象
	 * 
	 * @return 用户登录对象
	 */
	UserLoInDto saveUserLoInBy2ForUserLoIn(UserLoInDto saveUserLoIn);

	/**
	 * 删除:用户登录
	 * 
	 * @param deleteUserLoIn
	 *            用户登录对象
	 * 
	 * @return 影响行数
	 */
	int deleteUserLoInBy1(UserLoInDto deleteUserLoIn);

	/**
	 * 删除:用户登录
	 * 
	 * @param deleteUserLoIn
	 *            用户登录对象
	 * 
	 * @return 影响行数
	 */
	int deleteUserLoInByIds(UserLoInDto deleteUserLoIn);

	/**
	 * 设置:用户登录
	 * 
	 * @param setUserLoIn
	 *            用户登录对象
	 * 
	 * @return 影响行数
	 */
	int setUserLoInBy1(UserLoInDto setUserLoIn);

	/**
	 * 设置:用户登录
	 * 
	 * @param setUserLoIn
	 *            用户登录对象
	 * 
	 * @return 影响行数
	 */
	int setUserLoInBy2(UserLoInDto setUserLoIn);

	/**
	 * 读取:用户登录
	 * 
	 * @param readUserLoIn
	 *            用户登录对象
	 * 
	 * @return 用户登录对象
	 */
	Integer readUserLoInByCodeNqIdForInteger(UserLoInDto readUserLoIn);

	/**
	 * 读取:用户登录
	 * 
	 * @param readUserLoIn
	 *            用户登录对象
	 * 
	 * @return 用户登录对象
	 */
	Integer readUserLoInBy2ForInteger(UserLoInDto readUserLoIn);

	/**
	 * 读取:用户登录
	 * 
	 * @param readListUserLoIn
	 *            用户登录对象
	 * 
	 * @return 用户登录对象集合
	 */
	List<Integer> readListUserLoInBy1(UserLoInDto readUserLoIn);

	/**
	 * 读取:用户登录
	 * 
	 * @param readListUserLoIn
	 *            用户登录对象
	 * 
	 * @return 用户登录对象集合
	 */
	List<Integer> readListUserLoInBy2(UserLoInDto readUserLoIn);

	/**
	 * 查询:用户登录
	 * 
	 * @param getUserLoIn
	 *            用户登录对象
	 * 
	 * @return 用户登录对象
	 */
	UserLoInDto getUserLoInBy1(UserLoInDto getUserLoIn);

	/**
	 * 查询:用户登录
	 * 
	 * @param getUserLoIn
	 *            用户登录对象
	 * 
	 * @return 用户登录对象
	 */
	UserLoInDto getUserLoInById(UserLoInDto getUserLoIn);

	/**
	 * 查询:用户登录
	 * 
	 * @param findUserLoIn
	 *            用户登录对象
	 * 
	 * @return 用户登录对象集合
	 */
	List<UserLoInDto> findUserLoInBy1(UserLoInDto findUserLoIn);

	/**
	 * 查询:用户登录
	 * 
	 * @param findUserLoIn
	 *            用户登录对象
	 * 
	 * @return 用户登录对象集合
	 */
	List<UserLoInDto> findUserLoInBy2(UserLoInDto findUserLoIn);
	
	/**
	 * 分页:用户登录
	 * 
	 * @param paginationUserLoIn
	 *            用户登录对象
	 * 
	 * @return 用户登录分页对象
	 */
	PaginationDto<UserLoInDto> paginationUserLoInBy1ForUserLoInList(UserLoInDto paginationUserLoIn);
			
	/**
	 * 分页
	 * 
	 * @param paginationUserLoIn
	 *            用户登录对象
	 * 
	 * @return 用户登录分页对象
	 */
	PaginationDto<Map<String, Object>> paginationUserLoInBy1ForMapList(UserLoInDto paginationUserLoIn);
	/**
	 * 保存:用户关系
	 * 
	 * @param saveUserRe
	 *            用户关系对象
	 * 
	 * @return 用户关系对象
	 */
	UserReDto saveUserReByIdOrCodeForUserRe(UserReDto saveUserRe);

	/**
	 * 保存:用户关系
	 * 
	 * @param saveUserRe
	 *            用户关系对象
	 * 
	 * @return 用户关系对象
	 */
	UserReDto saveUserReBy2ForUserRe(UserReDto saveUserRe);

	/**
	 * 删除:用户关系
	 * 
	 * @param deleteUserRe
	 *            用户关系对象
	 * 
	 * @return 影响行数
	 */
	int deleteUserReBy1(UserReDto deleteUserRe);

	/**
	 * 删除:用户关系
	 * 
	 * @param deleteUserRe
	 *            用户关系对象
	 * 
	 * @return 影响行数
	 */
	int deleteUserReByIds(UserReDto deleteUserRe);

	/**
	 * 设置:用户关系
	 * 
	 * @param setUserRe
	 *            用户关系对象
	 * 
	 * @return 影响行数
	 */
	int setUserReBy1(UserReDto setUserRe);

	/**
	 * 设置:用户关系
	 * 
	 * @param setUserRe
	 *            用户关系对象
	 * 
	 * @return 影响行数
	 */
	int setUserReBy2(UserReDto setUserRe);

	/**
	 * 读取:用户关系
	 * 
	 * @param readUserRe
	 *            用户关系对象
	 * 
	 * @return 用户关系对象
	 */
	Integer readUserReByCodeNqIdForInteger(UserReDto readUserRe);

	/**
	 * 读取:用户关系
	 * 
	 * @param readUserRe
	 *            用户关系对象
	 * 
	 * @return 用户关系对象
	 */
	Integer readUserReBy2ForInteger(UserReDto readUserRe);

	/**
	 * 读取:用户关系
	 * 
	 * @param readListUserRe
	 *            用户关系对象
	 * 
	 * @return 用户关系对象集合
	 */
	List<Integer> readListUserReBy1(UserReDto readUserRe);

	/**
	 * 读取:用户关系
	 * 
	 * @param readListUserRe
	 *            用户关系对象
	 * 
	 * @return 用户关系对象集合
	 */
	List<Integer> readListUserReBy2(UserReDto readUserRe);

	/**
	 * 查询:用户关系
	 * 
	 * @param getUserRe
	 *            用户关系对象
	 * 
	 * @return 用户关系对象
	 */
	UserReDto getUserReBy1(UserReDto getUserRe);

	/**
	 * 查询:用户关系
	 * 
	 * @param getUserRe
	 *            用户关系对象
	 * 
	 * @return 用户关系对象
	 */
	UserReDto getUserReById(UserReDto getUserRe);

	/**
	 * 查询:用户关系
	 * 
	 * @param findUserRe
	 *            用户关系对象
	 * 
	 * @return 用户关系对象集合
	 */
	List<UserReDto> findUserReBy1(UserReDto findUserRe);

	/**
	 * 查询:用户关系
	 * 
	 * @param findUserRe
	 *            用户关系对象
	 * 
	 * @return 用户关系对象集合
	 */
	List<UserReDto> findUserReBy2(UserReDto findUserRe);
	
	/**
	 * 分页:用户关系
	 * 
	 * @param paginationUserRe
	 *            用户关系对象
	 * 
	 * @return 用户关系分页对象
	 */
	PaginationDto<UserReDto> paginationUserReBy1ForUserReList(UserReDto paginationUserRe);
			
	/**
	 * 分页
	 * 
	 * @param paginationUserRe
	 *            用户关系对象
	 * 
	 * @return 用户关系分页对象
	 */
	PaginationDto<Map<String, Object>> paginationUserReBy1ForMapList(UserReDto paginationUserRe);
}